/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package slent.iespana.es.visualizacion;

import javax.media.opengl.*;
import com.sun.opengl.util.*;
import javax.swing.JOptionPane;

/**
 *
 * @author slent
 */
public class DibujadorMolecula {

    protected GLUT glut;
    protected double desplazX;
    protected double desplazY;
    protected double desplazZ;
    protected double posX;
    protected double posY;
    protected double posZ;
    protected ColorJOGL color;
    protected Posicion posicionInicial;
    protected boolean reaccionando = false;
    protected boolean esperar = false;
    public static int espaceRatio=15;

    public DibujadorMolecula() {
        glut = new GLUT();
    }

    public void dibujar(GL gl) {
    }

    public void setGlut(GLUT glut) {
    }

    public GLUT getGlut(GLUT glut) {
        return new GLUT();
    }

    public Posicion getPosicionInicial() {
        return posicionInicial;
    }

    public void setPosicionInicial(Posicion posicionInicial) {
        this.posicionInicial = posicionInicial;
    }

    public void preparar() {
    }

    public void reaccionar() {
        System.out.println("REACCIONANDO");
        desplazX *= -1;
        desplazY *= -1;
        desplazZ *= -1;
        reaccionando = true;
    }

    public void colisionMismoTipo() {
        desplazX *= -1;
        desplazY *= -1;
        desplazZ *= -1;
    }

    public void dibujarReaccion(GL gl) {
    }

    public void esperarTermineReaccion() {
        esperar = true;
    }

    protected void desplazar(GL gl) {
        gl.glTranslated(posX, posY, posZ);
        gl.glRotated(45, 1, 0, 1);
        posX += desplazX;
        posY += desplazY;
        posZ += desplazZ;

        posicionInicial.setPosX(posicionInicial.getPosX() + posX);
        posicionInicial.setPosY(posicionInicial.getPosY() + posY);
        posicionInicial.setPosZ(posicionInicial.getPosZ() + posZ);
        System.out.println("posiciones absolutas X:" + posicionInicial.getPosX() + " Y:"
                + posicionInicial.getPosY() + " Z:" + posicionInicial.getPosZ());

        if (posicionInicial.getPosX() < -espaceRatio || posicionInicial.getPosX() > espaceRatio) {
            desplazX *= -1;
        }
        if (posicionInicial.getPosY() < -espaceRatio || posicionInicial.getPosY() > espaceRatio) {
            desplazY *= -1;
        }
        if (posicionInicial.getPosZ() < -espaceRatio || posicionInicial.getPosZ() > espaceRatio) {
            desplazZ *= -1;
        }

    }
}
